"""
    1. 模板匹配
        cv.matchTemplate(img, template, method)
            参数：
                img：要进行模板匹配的图像，
                Template：模板，
                method：实现模板匹配的算法，只要有：
                    平方差匹配（CV.TM_SQDIFF）：利用模板与图像之间的平方差进行匹配，最好的匹配是0，匹配越差，匹配的值越大
                    相关匹配（CV_TM_CCORR）：利用模板与图像间的乘法进行匹配，数值越大表示匹配程度越高，越小表示匹配效果差。
                    利用相关系数匹配（CV_TM_CCOEFF）：利用模板与图像间的相关系数匹配，1表示完美匹配，-1表示最差的匹配

    2. 查找匹配最大值所在位置
        cv.minMaxLoc()
"""
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt

# 1. 读取图像
img = cv.imread("image/wulin.jpeg")
template = cv.imread("image/bai.jpeg")
# h, w, l = template.shape
h, w = template.shape[:2]

# 2 模板匹配
# 2.1 模板匹配
res = cv.matchTemplate(img, template, cv.TM_CCORR)
# 2.2 返回图像中最匹配的位置，确定左上角坐标，并将匹配位置绘制在图像上
min_val, max_val, min_loc, max_loc = cv.minMaxLoc(res)
# 使用平方差时最小值为最佳匹配位置
# top_left = min_loc
top_left = max_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
cv.rectangle(img, top_left, bottom_right, (0, 255, 0), 2)

# 3. 图像显示
plt.imshow(img[:, :, ::-1])
plt.title("匹配结果"), plt.xticks([]), plt.yticks([])
plt.show()




